/*
 * Copyright (c) 2011, Brookhaven National Laboratory
 * All rights reserved.
 * The software in this package is published under the terms
 * of the BSD license a copy of which has been included with
 * this distribution in the license.txt file.
 */

#ifndef _OXTYPES_DDS_TYPE_DYNAMIC_DETAIL_DESCRIPTOR_H
#define _OXTYPES_DDS_TYPE_DYNAMIC_DETAIL_DESCRIPTOR_H 

#include <dds/xtypes/TypeObject.hpp>

namespace dds { namespace type { namespace dynamic { namespace detail {

  class AnnotationDescriptor {

  public:

    dds::type::dynamic::DynamicType type;

    // std::map<std::string, std::string> 
    dds::type::dynamic::Parameters values;
  };

  struct MemberDescriptor {

    dds::type::dynamic::DynamicType type;

    std::string name;

    dds::type::MemberId id;

    uint32_t index;

    // std::vector<int32_t> 
    dds::type::UnionCaseLabelSeq label;

    std::string defaultValue;

    bool defaultLabel;

  };

  struct TypeDescriptor {

    dds::type::TypeKind typeKind;

    std::string name;

    dds::type::dynamic::DynamicType baseType;
    dds::type::dynamic::DynamicType discType;
    dds::type::dynamic::DynamicType elemType;
    dds::type::dynamic::DynamicType keyType;

  };
				   
}}}}


#endif
